#include <algorithm>
#include <cstdio>
#include <cstdlib>
#include <string>
#include <vector>
using namespace std;

class Solution {
public:
    struct Version{
        vector<int> v;
        inline int operator[](int n)const{
            if(n<v.size()){
                return v[n];
            }
            return 0;
        }
        inline Version(const string &str){
            int p=0;
            for(int i=0;i<str.size();i++){
                if(str[i]=='.'){
                    v.push_back(
                        atoi(str.substr(p,i-p).c_str())
                    );
                    p=i+1;
                }
            }
            v.push_back(
                atoi(str.substr(p).c_str())
            );
            // for(auto i:v){
            //     printf("%d ",i);
            // }
            // printf("\n");
        }
        inline bool operator<(const Version&other)const{
            for(int i=0;i<max(v.size(),other.v.size());i++){
                if((*this)[i]<other[i]){
                    return true;
                }else if((*this)[i]>other[i]){
                    return false;
                }
            }
            return false;
        }
        inline bool operator==(const Version&other)const{
            for(int i=0;i<max(v.size(),other.v.size());i++){
                if((*this)[i]!=other[i]){
                    return false;
                }
            }
            return true;
        }
    };
    inline int compareVersion(string version1, string version2) {
        Version v1=version1;
        Version v2=version2;
        if(v1==v2)return 0;
        return v1<v2?-1:1;
    }
};


int main(){

}